iT邦幫忙

2021 iThome 鐵人賽

DAY 18
0

實務上,一個服務往往可以拆解成數個微服務組成。以市占相當高的 Wordpress 內容管理系統 CMP 為例,其可拆解成 mysql 和 wordpress 。如果你要一個個獨自將這些微服務容器建立起來,著實會花上不少時間,且也易造成重工和遷移不易的問題。Docker Compose 可以方便管理者控制容器間的關係,藉由撰寫設定檔的方式,減少重複的工時且一併將相關的系列參數給寫入。

Docker Compose 和 Dockerfile 的異同

Dockerfile 定義的是單一映像 ( Image ) 的建立步驟過程;Docker Compose 則定義了藉由映像所組成的容器間的依賴關係、容器的啟動方式和相關參數

安裝 Docker Compose

Docker Compose 目前的 Repository 是位於 Github 上,可以點選 這邊 前往。由於先前是運用 Linode 租用的 Debian 虛擬主機,所以透過命令列的方式來進行安裝:

# 1. 先確認你是否安裝過 curl
sudo apt update && sudo apt upgrade
sudo apt install curl
# 2. 從官方 Repo 取得最新的 docker compose
curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose # 記得給予權限執行

docker-compose.yml

這是 Docker Compose 的組態 Config 預設檔,看起來會像是這個樣子:

# Wordpress official demo on docs.docker.com
version: "3.9" # docker compose 解析規則版本
    
services: # 定義專案組成,由 db, wordpress 兩個服務組成。這兩個名稱是自訂的
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment: # 參數可定義在這邊
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    
  wordpress:
    depends_on: # 服務間的依賴性
      - db
    image: wordpress:latest # 要取用哪個映像檔
    volumes:
      - wordpress_data:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
volumes: # 別忘記建立 volume,因為你在 db 和 wordpress 間有定義相關的 volumes
  db_data: {}
  wordpress_data: {}

上一篇
Day 17 Dockerfile 和 Docker-Compose 的差異
下一篇
Day 19 Docker Compose 操作指令
系列文
以 Docker 為始的多種開源服務初探30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言